package com.yrd.centerlogclient;

import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;

public class Utils {
	private static String getRealIp=null;//缓存
	public static String refreshRealIp() {
		getRealIp=null;
		return getRealIp();
	}
	public static String getRealIp() {
		if(getRealIp!=null){
			return getRealIp;
		}
        String localip = null;// 本地IP，如果没有配置外网IP则返回它
        String netip = null;// 外网IP
		try {
			Enumeration<NetworkInterface> netInterfaces = NetworkInterface.getNetworkInterfaces();
	        InetAddress ip = null;
	        boolean finded = false;// 是否找到外网IP
	        while (netInterfaces.hasMoreElements() && !finded) {
	            NetworkInterface ni = netInterfaces.nextElement();
	            Enumeration<InetAddress> address = ni.getInetAddresses();
	            while (address.hasMoreElements()) {
	                ip = address.nextElement();
	                if (!ip.isSiteLocalAddress() 
	                        && !ip.isLoopbackAddress() 
	                        && ip.getHostAddress().indexOf(":") == -1) {// 外网IP
	                    netip = ip.getHostAddress();
	                    finded = true;
	                    break;
	                } else if (ip.isSiteLocalAddress() 
	                        && !ip.isLoopbackAddress() 
	                        && ip.getHostAddress().indexOf(":") == -1) {// 内网IP
	                    localip = ip.getHostAddress();
	                }
	            }
	        }
	     
	        if (netip != null && !"".equals(netip)) {
	        	getRealIp=netip;
	            return netip;
	        } else {
	        	getRealIp=localip;
	            return localip;
	        }
		} catch (SocketException e) {
			e.printStackTrace();
		}
		return null;
    }
}
